home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / ztgevc.z / ztgevc
Text File  |  1996-03-14  |  7KB  |  199 lines

  1.  
  2.  
  3.  
  4. ZZZZTTTTGGGGEEEEVVVVCCCC((((3333FFFF))))                                                          ZZZZTTTTGGGGEEEEVVVVCCCC((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      ZTGEVC - compute some or all of the right and/or left generalized
  10.      eigenvectors of a pair of complex upper triangular matrices (A,B)
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE ZTGEVC( SIDE, HOWMNY, SELECT, N, A, LDA, B, LDB, VL, LDVL, VR,
  14.                         LDVR, MM, M, WORK, RWORK, INFO )
  15.  
  16.          CHARACTER      HOWMNY, SIDE
  17.  
  18.          INTEGER        INFO, LDA, LDB, LDVL, LDVR, M, MM, N
  19.  
  20.          LOGICAL        SELECT( * )
  21.  
  22.          DOUBLE         PRECISION RWORK( * )
  23.  
  24.          COMPLEX*16     A( LDA, * ), B( LDB, * ), VL( LDVL, * ), VR( LDVR, *
  25.                         ), WORK( * )
  26.  
  27. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  28.      ZTGEVC computes some or all of the right and/or left generalized
  29.      eigenvectors of a pair of complex upper triangular matrices (A,B).
  30.  
  31.      The right generalized eigenvector x and the left generalized eigenvector
  32.      y of (A,B) corresponding to a generalized eigenvalue w are defined by:
  33.  
  34.              (A - wB) * x = 0  and  y**H * (A - wB) = 0
  35.  
  36.      where y**H denotes the conjugate tranpose of y.
  37.  
  38.      If an eigenvalue w is determined by zero diagonal elements of both A and
  39.      B, a unit vector is returned as the corresponding eigenvector.
  40.  
  41.      If all eigenvectors are requested, the routine may either return the
  42.      matrices X and/or Y of right or left eigenvectors of (A,B), or the
  43.      products Z*X and/or Q*Y, where Z and Q are input unitary matrices.  If
  44.      (A,B) was obtained from the generalized Schur factorization of an
  45.      original pair of matrices
  46.         (A0,B0) = (Q*A*Z**H,Q*B*Z**H),
  47.      then Z*X and Q*Y are the matrices of right or left eigenvectors of A.
  48.  
  49.  
  50. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  51.      SIDE    (input) CHARACTER*1
  52.              = 'R': compute right eigenvectors only;
  53.              = 'L': compute left eigenvectors only;
  54.              = 'B': compute both right and left eigenvectors.
  55.  
  56.      HOWMNY  (input) CHARACTER*1
  57.              = 'A': compute all right and/or left eigenvectors;
  58.              = 'B': compute all right and/or left eigenvectors, and
  59.              backtransform them using the input matrices supplied in VR and/or
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ZZZZTTTTGGGGEEEEVVVVCCCC((((3333FFFF))))                                                          ZZZZTTTTGGGGEEEEVVVVCCCC((((3333FFFF))))
  71.  
  72.  
  73.  
  74.              VL; = 'S': compute selected right and/or left eigenvectors,
  75.              specified by the logical array SELECT.
  76.  
  77.      SELECT  (input) LOGICAL array, dimension (N)
  78.              If HOWMNY='S', SELECT specifies the eigenvectors to be computed.
  79.              If HOWMNY='A' or 'B', SELECT is not referenced.  To select the
  80.              eigenvector corresponding to the j-th eigenvalue, SELECT(j) must
  81.              be set to .TRUE..
  82.  
  83.      N       (input) INTEGER
  84.              The order of the matrices A and B.  N >= 0.
  85.  
  86.      A       (input) COMPLEX*16 array, dimension (LDA,N)
  87.              The upper triangular matrix A.
  88.  
  89.      LDA     (input) INTEGER
  90.              The leading dimension of array A.  LDA >= max(1,N).
  91.  
  92.      B       (input) COMPLEX*16 array, dimension (LDB,N)
  93.              The upper triangular matrix B.  B must have real diagonal
  94.              elements.
  95.  
  96.      LDB     (input) INTEGER
  97.              The leading dimension of array B.  LDB >= max(1,N).
  98.  
  99.      VL      (input/output) COMPLEX*16 array, dimension (LDVL,MM)
  100.              On entry, if SIDE = 'L' or 'B' and HOWMNY = 'B', VL must contain
  101.              an N-by-N matrix Q (usually the unitary matrix Q of left Schur
  102.              vectors returned by ZHGEQZ).  On exit, if SIDE = 'L' or 'B', VL
  103.              contains:  if HOWMNY = 'A', the matrix Y of left eigenvectors of
  104.              (A,B); if HOWMNY = 'B', the matrix Q*Y; if HOWMNY = 'S', the left
  105.              eigenvectors of (A,B) specified by SELECT, stored consecutively
  106.              in the columns of VL, in the same order as their eigenvalues.  If
  107.              SIDE = 'R', VL is not referenced.
  108.  
  109.      LDVL    (input) INTEGER
  110.              The leading dimension of array VL.  LDVL >= max(1,N) if SIDE =
  111.              'L' or 'B'; LDVL >= 1 otherwise.
  112.  
  113.      VR      (input/output) COMPLEX*16 array, dimension (LDVR,MM)
  114.              On entry, if SIDE = 'R' or 'B' and HOWMNY = 'B', VR must contain
  115.              an N-by-N matrix Q (usually the unitary matrix Z of right Schur
  116.              vectors returned by ZHGEQZ).  On exit, if SIDE = 'R' or 'B', VR
  117.              contains:  if HOWMNY = 'A', the matrix X of right eigenvectors of
  118.              (A,B); if HOWMNY = 'B', the matrix Z*X; if HOWMNY = 'S', the
  119.              right eigenvectors of (A,B) specified by SELECT, stored
  120.              consecutively in the columns of VR, in the same order as their
  121.              eigenvalues.  If SIDE = 'L', VR is not referenced.
  122.  
  123.      LDVR    (input) INTEGER
  124.              The leading dimension of the array VR.  LDVR >= max(1,N) if SIDE
  125.              = 'R' or 'B'; LDVR >= 1 otherwise.
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. ZZZZTTTTGGGGEEEEVVVVCCCC((((3333FFFF))))                                                          ZZZZTTTTGGGGEEEEVVVVCCCC((((3333FFFF))))
  137.  
  138.  
  139.  
  140.      MM      (input) INTEGER
  141.              The leading dimension of the array VR.  LDVR >= max(1,N) if SIDE
  142.              = 'R' or 'B'; LDVR >= 1 otherwise.
  143.  
  144.      MM      (input) INTEGER
  145.              The number of columns in the arrays VL and/or VR. MM >= M.
  146.  
  147.      M       (output) INTEGER
  148.              The number of columns in the arrays VL and/or VR actually used to
  149.              store the eigenvectors.  If HOWMNY = 'A' or 'B', M is set to N.
  150.              Each selected eigenvector occupies one column.
  151.  
  152.      WORK    (workspace) COMPLEX*16 array, dimension (2*N)
  153.  
  154.      RWORK   (workspace) DOUBLE PRECISION array, dimension (2*N)
  155.  
  156.      INFO    (output) INTEGER
  157.              = 0:  successful exit.
  158.              < 0:  if INFO = -i, the i-th argument had an illegal value.
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.